package com.xwintop.xJavaFxTool.services.littleTools;

import com.xwintop.xJavaFxTool.controller.littleTools.RelationshipCalculatorController;
import javafx.event.ActionEvent;
import javafx.scene.control.Button;
import lombok.Getter;
import lombok.Setter;
import lombok.extern.slf4j.Slf4j;

import java.util.Stack;

@Getter
@Setter
@Slf4j
public class RelationshipCalculatorService {
    private RelationshipCalculatorController relationshipCalculatorController;
    private int count = 0;

    public RelationshipCalculatorService(RelationshipCalculatorController relationshipCalculatorController) {
        this.relationshipCalculatorController = relationshipCalculatorController;
    }

    // 【回退】按钮的事件监听器
    public void do_rebackButton_event() {
        String[] array = relationshipCalculatorController.getInputTextArea().getText().split("的");
        Stack<String> stack = new Stack<>();
        for (String str : array) {
            stack.push(str);
        }
        stack.pop();
        String string = "";
        for (String str : stack) {
            string += str + "的";
        }
        int index = string.length();
        if (index == 0) {
            relationshipCalculatorController.getInputTextArea().setText("我");
        } else {
            string = string.substring(0, index - 1);
            relationshipCalculatorController.getInputTextArea().setText(string);
        }
    }

    // 【计算】按钮的事件监听器
    public void do_countButton_event() {
        String[][] relationshipData = RelationshipCalculatorService.getRelationShipData();
        String[] array = relationshipCalculatorController.getInputTextArea().getText().split("的");
        int column = 0, row = 0;
        String resultValue = array[0];
        for (int i = 1; i < array.length; i++) {
            for (int m = 0; m < relationshipData.length; ++m) {
                if (relationshipData[m][0].equals(resultValue)) {
                    row = m;
                }
            }
            for (int n = 0; n < relationshipData[0].length; n++) {
                if (relationshipData[0][n].equals(array[i])) {
                    column = n;
                }
            }
            resultValue = relationshipData[row][column];
            if (!isExist(resultValue, relationshipData)) {
                resultValue = "未知亲戚";
                break;
            }
        }
        relationshipCalculatorController.getOutputTextArea().setText(resultValue);
    }

    /**
     * 操作结果：根据按钮设置文本
     *
     * @param button 按钮
     */
    public void setTextByButton(Button button) {
        // 将累计的按钮点击次数清零，重新计数
        if (relationshipCalculatorController.getInputTextArea().getText().equals(null) || relationshipCalculatorController.getInputTextArea().getText().equals("")) {
            count = 0;
        }
        String name = "";
        if (count == 0) {
            name = button.getText();
        } else {
            name = "的" + button.getText();
        }
        count++;
        relationshipCalculatorController.getInputTextArea().appendText(name);
    }

    /**
     * 操作结果：判断某个值在二维数组中的行首值中是否存在
     *
     * @param value 某个值
     * @param array 二维数组
     * @return 如果存在返回true，否则返回false
     */
    public boolean isExist(String value, String[][] array) {
        for (int i = 0; i < array.length; i++) {
            if (value.equals(array[i][0])) {
                return true;
            }
        }
        return false;
    }

    public static String[][] getRelationShipData() {
        String[][] relationshipData = {
                {"我", "爸爸", "妈妈", "哥哥", "弟弟", "姐姐", "妹妹", "儿子", "女儿", "妻子", "丈夫", "未知亲戚"},
                {"爸爸", "爷爷", "奶奶", "伯父", "叔叔", "姑妈", "姑妈", "我", "妹妹", "妈妈", "不存在该种关系", "未知亲戚"},
                {"妈妈", "外公", "外婆", "大舅", "小舅", "大姨妈", "小姨妈", "我", "妹妹", "不存在该种关系", "爸爸", "未知亲戚"},
                {"哥哥", "爸爸", "妈妈", "哥哥", "我", "姐姐", "妹妹", "侄儿", "侄女", "嫂子", "不存在该种关系", "未知亲戚"},
                {"弟弟", "爸爸", "妈妈", "我", "弟弟", "姐姐", "妹妹", "侄儿", "侄女", "弟妹", "不存在该种关系", "未知亲戚"},
                {"姐姐", "爸爸", "妈妈", "哥哥", "我", "姐姐", "妹妹", "外甥", "外甥女", "不存在该种关系", "姐夫", "未知亲戚"},
                {"妹妹", "爸爸", "妈妈", "我", "弟弟", "姐姐", "妹妹", "外甥", "外甥女", "不存在该种关系", "妹夫", "未知亲戚"},
                {"儿子", "我", "妻子", "哥哥", "弟弟", "姐姐", "妹妹", "孙子", "孙女", "儿媳", "不存在该种关系", "未知亲戚"},
                {"女儿", "我", "妻子", "哥哥", "弟弟", "姐姐", "妹妹", "外孙", "外孙女", "不存在该种关系", "女婿", "未知亲戚"},
                {"妻子", "岳父", "岳母", "大舅子", "小舅子", "大姨子", "小姨子", "儿子", "女儿", "不存在该种关系", "我", "未知亲戚"},
                {"丈夫", "不存在该种关系", "不存在该种关系", "不存在该种关系", "不存在该种关系", "不存在该种关系", "不存在该种关系", "不存在该种关系", "不存在该种关系",
                        "不存在该种关系", "不存在该种关系", "未知亲戚"},
                {"爷爷", "曾祖父", "曾祖母", "伯祖父", "伯祖父", "姑奶奶", "姑奶奶", "爸爸", "姑妈", "奶奶", "不存在该种关系", "未知亲戚"},
                {"奶奶", "曾外祖父", "曾外祖母", "舅公", "舅公", "姨奶奶", "姨奶奶", "爸爸", "姑妈", "不存在该种关系", "爷爷", "未知亲戚"},
                {"伯父", "爷爷", "奶奶", "伯父", "叔叔", "姑妈", "姑妈", "堂哥", "堂姐", "伯母", "不存在该种关系", "未知亲戚"},
                {"叔叔", "爷爷", "奶奶", "伯父", "叔叔", "姑妈", "姑妈", "堂弟", "堂妹", "婶婶", "不存在该种关系", "未知亲戚"},
                {"姑妈", "爷爷", "奶奶", "伯父", "叔叔", "姑妈", "姑妈", "姑表哥", "姑表姐", "不存在该种关系", "姑丈", "未知亲戚"},
                {"外公", "外曾祖父", "外曾祖母", "伯外祖父", "叔外祖父", "姑姥姥", "姑姥姥", "舅舅", "妈妈", "外婆", "不存在该种关系", "未知亲戚"},
                {"外婆", "外曾外祖父", "外曾外祖母", "外舅公", "外舅公", "姨姥姥", "姨姥姥", "舅舅", "妈妈", "不存在该种关系", "外公", "未知亲戚"},
                {"大舅", "外公", "外婆", "大舅", "舅舅", "大姨", "妈妈", "舅表哥", "舅表姐", "大舅妈", "不存在该种关系", "未知亲戚"},
                {"小舅", "外公", "外婆", "舅舅", "小舅", "妈妈", "小姨", "舅表弟", "舅表妹", "小舅妈", "不存在该种关系", "未知亲戚"},
                {"大姨妈", "外公", "外婆", "大舅", "舅舅", "大姨", "妈妈", "姨表哥", "姨表姐", "不存在该种关系", "大姨父", "未知亲戚"},
                {"小姨妈", "外公", "外婆", "舅舅", "小舅", "妈妈", "小姨", "姨表弟", "姨表妹", "不存在该种关系", "小姨父", "未知亲戚"},
                {"侄儿", "哥哥", "嫂子", "侄儿", "侄儿", "侄女", "侄女", "侄孙子", "侄孙女", "侄媳", "不存在该种关系", "未知亲戚"},
                {"侄女", "哥哥", "嫂子", "侄儿", "侄儿", "侄女", "侄女", "外侄孙", "外侄孙女", "不存在该种关系", "侄女婿", "未知亲戚"},
                {"嫂子", "姻伯父", "姻伯母", "姻兄", "姻弟", "姻姐", "姻妹", "侄儿", "侄女", "不存在该种关系", "哥哥", "未知亲戚"},
                {"弟妹", "姻叔父", "姻叔母", "姻兄", "姻弟", "姻姐", "姻妹", "侄儿", "侄女", "不存在该种关系", "弟弟", "未知亲戚"},
                {"外甥", "姐夫", "姐姐", "外甥", "外甥", "外甥女", "外甥女", "外甥孙", "外甥孙女", "外甥媳妇", "不存在该种关系", "未知亲戚"},
                {"外甥女", "姐夫", "姐姐", "外甥", "外甥", "外甥女", "外甥女", "外甥孙", "外甥孙女", "不存在该种关系", "外甥女婿", "未知亲戚"},
                {"姐夫", "姻世伯", "姻伯母", "姻兄", "姻弟", "姻姐", "姻妹", "外甥", "外甥女", "姐姐", "不存在该种关系", "未知亲戚"},
                {"妹夫", "姻世伯", "姻伯母", "姻兄", "姻弟", "姻姐", "姻妹", "外甥", "外甥女", "妹妹", "不存在该种关系", "未知亲戚"},
                {"孙子", "儿子", "儿媳", "孙子", "孙子", "孙女", "孙女", "曾孙", "曾孙女", "孙媳", "不存在该种关系", "未知亲戚"},
                {"孙女", "儿子", "儿媳", "孙子", "孙子", "孙女", "孙女", "曾外孙", "曾外孙女", "不存在该种关系", "孙女婿", "未知亲戚"},
                {"儿媳", "亲家公", "亲家母", "姻侄", "姻侄", "姻侄女", "姻侄女", "孙子", "孙女", "不存在该种关系", "儿子", "未知亲戚"},
                {"外孙女", "女婿", "女儿", "外孙", "外孙", "外孙女", "外孙女", "外曾外孙", "外曾外孙女", "不存在该种关系", "外孙女婿", "未知亲戚"},
                {"外孙", "女婿", "女儿", "外孙", "外孙", "外孙女", "外孙女", "外曾孙", "外曾孙女", "外孙媳", "不存在该种关系", "未知亲戚"},
                {"女婿", "亲家公", "亲家母", "姻侄", "姻侄", "姻侄女", "姻侄女", "外孙", "外孙女", "女儿", "不存在该种关系", "未知亲戚"},
                {"岳父", "太岳父", "太岳母", "伯岳", "叔岳", "姑岳母", "姑岳母", "大舅子", "大姨子", "岳母", "不存在该种关系", "未知亲戚"},
                {"岳母", "外太岳父", "外太岳母", "舅岳父", "舅岳父", "姨岳母", "姨岳母", "小舅子", "小姨子", "不存在该种关系", "岳父", "未知亲戚"},
                {"大舅子", "岳父", "岳母", "大舅子", "小舅子", "大姨子", "小姨子", "内侄", "内侄女", "舅嫂", "不存在该种关系", "未知亲戚"},
                {"小舅子", "岳父", "岳母", "大舅子", "小舅子", "老婆", "小姨子", "内侄", "内侄女", "舅弟媳", "不存在该种关系", "未知亲戚"},
                {"大姨子", "岳父", "岳母", "大舅子", "小舅子", "大姨子", "老婆", "内甥", "姨甥女", "不存在该种关系", "大姨夫", "未知亲戚"},
                {"小姨子", "岳父", "岳母", "大舅子", "小舅子", "老婆", "小姨子", "内甥", "姨甥女", "不存在该种关系", "小姨夫", "未知亲戚"},
                {"曾祖父", "高祖父", "高祖母", "曾伯祖父", "曾叔祖父", "曾姑奶奶", "曾姑奶奶", "爷爷", "姑奶奶", "曾祖母", "不存在该种关系", "未知亲戚"},
                {"曾祖母", "高外祖父", "高外祖母", "舅曾祖父", "舅曾祖父", "姨曾祖母", "姨曾祖母", "爷爷", "姑奶奶", "不存在该种关系", "曾祖父", "未知亲戚"},
                {"伯祖父", "曾祖父", "曾祖母", "伯祖父", "爷爷", "姑奶奶", "姑奶奶", "堂伯", "堂姑", "伯祖母", "不存在该种关系", "未知亲戚"},
                {"姑奶奶", "曾祖父", "曾祖母", "爷爷", "叔祖父", "姑奶奶", "姑奶奶", "姑表伯父", "姑表姑母", "不存在该种关系", "姑爷爷", "未知亲戚"},
                {"曾外祖父", "曾外曾祖父", "曾外曾祖母", "伯曾外祖父", "叔曾外祖父", "姑曾外祖母", "姑曾外祖母", "舅公", "奶奶", "曾外祖母", "不存在该种关系", "未知亲戚"},
                {"曾外祖母", "曾外曾外祖父", "曾外曾外祖母", "舅曾外祖父", "舅曾外祖父", "姨曾外祖母", "姨曾外祖母", "舅公", "奶奶", "不存在该种关系", "曾外祖父", "未知亲戚"},
                {"舅公", "曾外祖父", "曾外祖母", "舅公", "舅公", "姨奶奶", "奶奶", "舅表伯父", "舅表姑母", "舅婆", "不存在该种关系", "未知亲戚"},
                {"姨奶奶", "曾外祖父", "曾外祖母", "舅公", "舅公", "姨奶奶", "奶奶", "姨表伯父", "姨表姑母", "不存在该种关系", "姨爷爷", "未知亲戚"},
                {"堂哥", "伯父", "伯母", "堂哥", "堂弟", "堂姐", "堂妹", "堂侄", "堂侄女", "堂嫂", "不存在该种关系", "未知亲戚"},
                {"堂弟", "叔叔", "婶婶", "堂哥", "堂弟", "堂姐", "堂妹", "堂侄", "堂侄女", "堂弟媳", "不存在该种关系", "未知亲戚"},
                {"堂姐", "伯父", "伯母", "堂哥", "堂弟", "堂姐", "堂妹", "堂外甥", "堂外甥女", "不存在该种关系", "堂姐夫", "未知亲戚"},
                {"堂妹", "叔叔", "婶婶", "堂哥", "堂弟", "堂姐", "堂妹", "堂外甥", "堂外甥女", "不存在该种关系", "堂妹夫", "未知亲戚"},
                {"伯母", "姻伯公", "姻伯婆", "姻世伯", "姻世伯", "姻伯母", "姻伯母", "堂哥", "堂姐", "不存在该种关系", "伯父", "未知亲戚"},
                {"婶婶", "姻伯公", "姻伯婆", "姻世伯", "姻世伯", "姻伯母", "姻伯母", "堂弟", "堂妹", "不存在该种关系", "叔叔", "未知亲戚"},
                {"舅表伯父", "", "", "", "", "", "", "", "", "", "", ""},
                {"姨表伯父", "", "", "", "", "", "", "", "", "", "", ""},
                {"舅表姑母", "", "", "", "", "", "", "", "", "", "", ""},
                {"姨表姑母", "", "", "", "", "", "", "", "", "", "", ""},
                {"舅婆", "", "", "", "", "", "", "", "", "", "", ""},
                {"姨爷爷", "", "", "", "", "", "", "", "", "", "", ""},
                {"堂侄", "", "", "", "", "", "", "", "", "", "", ""},
                {"堂侄儿", "", "", "", "", "", "", "", "", "", "", ""},
                {"堂嫂", "", "", "", "", "", "", "", "", "", "", ""},
                {"堂弟媳", "", "", "", "", "", "", "", "", "", "", ""},
                {"堂外甥", "", "", "", "", "", "", "", "", "", "", ""},
                {"堂外甥女", "", "", "", "", "", "", "", "", "", "", ""},
                {"堂姐夫", "", "", "", "", "", "", "", "", "", "", ""},
                {"堂妹夫", "", "", "", "", "", "", "", "", "", "", ""},
                {"姻世伯", "", "", "", "", "", "", "", "", "", "", ""},
                {"姻伯母", "", "", "", "", "", "", "", "", "", "", ""},
                {"姑表哥", "", "", "", "", "", "", "", "", "", "", ""},
                {"姑表姐", "", "", "", "", "", "", "", "", "", "", ""},
                {"姑丈", "", "", "", "", "", "", "", "", "", "", ""},
                {"外曾祖父", "", "", "", "", "", "", "", "", "", "", ""},
                {"外曾祖母", "", "", "", "", "", "", "", "", "", "", ""},
                {"伯外祖父", "", "", "", "", "", "", "", "", "", "", ""},
                {"叔外祖父", "", "", "", "", "", "", "", "", "", "", ""},
                {"姑姥姥", "", "", "", "", "", "", "", "", "", "", ""},
                {"舅舅", "", "", "", "", "", "", "", "", "", "", ""},
                {"外舅公", "", "", "", "", "", "", "", "", "", "", ""},
                {"姨姥姥", "", "", "", "", "", "", "", "", "", "", ""},
                {"舅表哥", "", "", "", "", "", "", "", "", "", "", ""},
                {"舅表姐", "", "", "", "", "", "", "", "", "", "", ""},
                {"大舅妈", "", "", "", "", "", "", "", "", "", "", ""},
                {"小舅妈", "", "", "", "", "", "", "", "", "", "", ""},
                {"舅表弟", "", "", "", "", "", "", "", "", "", "", ""},
                {"舅表妹", "", "", "", "", "", "", "", "", "", "", ""},
                {"大姨", "", "", "", "", "", "", "", "", "", "", ""},
                {"小姨", "", "", "", "", "", "", "", "", "", "", ""},
                {"姨表哥", "", "", "", "", "", "", "", "", "", "", ""},
                {"姨表弟", "", "", "", "", "", "", "", "", "", "", ""},
                {"姨表姐", "", "", "", "", "", "", "", "", "", "", ""},
                {"姨表妹", "", "", "", "", "", "", "", "", "", "", ""},
                {"大姨父", "", "", "", "", "", "", "", "", "", "", ""},
                {"小姨父", "", "", "", "", "", "", "", "", "", "", ""},
                {"侄孙子", "", "", "", "", "", "", "", "", "", "", ""},
                {"外侄孙", "", "", "", "", "", "", "", "", "", "", ""},
                {"侄孙女", "", "", "", "", "", "", "", "", "", "", ""},
                {"外侄孙女", "", "", "", "", "", "", "", "", "", "", ""},
                {"侄媳", "", "", "", "", "", "", "", "", "", "", ""},
                {"侄女婿", "", "", "", "", "", "", "", "", "", "", ""},
                {"姻伯父", "", "", "", "", "", "", "", "", "", "", ""},
                {"姻叔父", "", "", "", "", "", "", "", "", "", "", ""},
                {"姻伯母", "", "", "", "", "", "", "", "", "", "", ""},
                {"姻叔母", "", "", "", "", "", "", "", "", "", "", ""},
                {"姻兄", "", "", "", "", "", "", "", "", "", "", ""},
                {"姻弟", "", "", "", "", "", "", "", "", "", "", ""},
                {"姻姐", "", "", "", "", "", "", "", "", "", "", ""},
                {"姻妹", "", "", "", "", "", "", "", "", "", "", ""},
                {"叔祖父", "", "", "", "", "", "", "", "", "", "", ""},
                {"堂伯", "", "", "", "", "", "", "", "", "", "", ""},
                {"堂姑", "", "", "", "", "", "", "", "", "", "", ""},
                {"姑表伯父", "", "", "", "", "", "", "", "", "", "", ""},
                {"姑表姑母", "", "", "", "", "", "", "", "", "", "", ""},
                {"伯祖母", "", "", "", "", "", "", "", "", "", "", ""},
                {"姑爷爷", "", "", "", "", "", "", "", "", "", "", ""},
                {"曾外曾祖父", "", "", "", "", "", "", "", "", "", "", ""},
                {"曾外曾祖母", "", "", "", "", "", "", "", "", "", "", ""},
                {"伯曾外祖父", "", "", "", "", "", "", "", "", "", "", ""},
                {"叔曾外祖父", "", "", "", "", "", "", "", "", "", "", ""},
                {"舅曾外祖父", "", "", "", "", "", "", "", "", "", "", ""},
                {"姑曾外祖母", "", "", "", "", "", "", "", "", "", "", ""},
                {"姨曾外祖母", "", "", "", "", "", "", "", "", "", "", ""},
                {"外甥孙女", "", "", "", "", "", "", "", "", "", "", ""},
                {"外甥孙", "", "", "", "", "", "", "", "", "", "", ""},
                {"外甥媳妇", "", "", "", "", "", "", "", "", "", "", ""},
                {"外甥女婿", "", "", "", "", "", "", "", "", "", "", ""},
                {"姻师伯", "", "", "", "", "", "", "", "", "", "", ""},
                {"姻伯母", "", "", "", "", "", "", "", "", "", "", ""},
                {"曾孙", "", "", "", "", "", "", "", "", "", "", ""},
                {"曾外孙", "", "", "", "", "", "", "", "", "", "", ""},
                {"曾孙女", "", "", "", "", "", "", "", "", "", "", ""},
                {"曾外孙女", "", "", "", "", "", "", "", "", "", "", ""},
                {"孙媳", "", "", "", "", "", "", "", "", "", "", ""},
                {"孙女婿", "", "", "", "", "", "", "", "", "", "", ""},
                {"亲家公", "", "", "", "", "", "", "", "", "", "", ""},
                {"亲家母", "", "", "", "", "", "", "", "", "", "", ""},
                {"姻侄", "", "", "", "", "", "", "", "", "", "", ""},
                {"姻侄女", "", "", "", "", "", "", "", "", "", "", ""},
                {"外曾外孙", "", "", "", "", "", "", "", "", "", "", ""},
                {"外曾外孙女", "", "", "", "", "", "", "", "", "", "", ""},
                {"外孙女婿", "", "", "", "", "", "", "", "", "", "", ""},
                {"外孙媳", "", "", "", "", "", "", "", "", "", "", ""},
                {"太岳父", "", "", "", "", "", "", "", "", "", "", ""},
                {"外太岳父", "", "", "", "", "", "", "", "", "", "", ""},
                {"太岳母", "", "", "", "", "", "", "", "", "", "", ""},
                {"外太岳母", "", "", "", "", "", "", "", "", "", "", ""},
                {"伯岳", "", "", "", "", "", "", "", "", "", "", ""},
                {"叔岳", "", "", "", "", "", "", "", "", "", "", ""},
                {"舅岳父", "", "", "", "", "", "", "", "", "", "", ""},
                {"姑岳母", "", "", "", "", "", "", "", "", "", "", ""},
                {"姨岳母", "", "", "", "", "", "", "", "", "", "", ""},
                {"内侄", "", "", "", "", "", "", "", "", "", "", ""},
                {"内侄女", "", "", "", "", "", "", "", "", "", "", ""},
                {"内甥", "", "", "", "", "", "", "", "", "", "", ""},
                {"姨甥女", "", "", "", "", "", "", "", "", "", "", ""},
                {"舅嫂", "", "", "", "", "", "", "", "", "", "", ""},
                {"舅弟媳", "", "", "", "", "", "", "", "", "", "", ""},
                {"大姨夫", "", "", "", "", "", "", "", "", "", "", ""},
                {"小姨夫", "", "", "", "", "", "", "", "", "", "", ""},
                {"高祖父", "", "", "", "", "", "", "", "", "", "", ""},
                {"高祖母", "", "", "", "", "", "", "", "", "", "", ""},
                {"高外祖父", "", "", "", "", "", "", "", "", "", "", ""},
                {"高外祖母", "", "", "", "", "", "", "", "", "", "", ""},
                {"舅伯祖父", "", "", "", "", "", "", "", "", "", "", ""},
                {"舅叔祖父", "", "", "", "", "", "", "", "", "", "", ""},
                {"舅曾祖父", "", "", "", "", "", "", "", "", "", "", ""},
                {"曾姑奶奶", "", "", "", "", "", "", "", "", "", "", ""},
                {"姨曾祖母", "", "", "", "", "", "", "", "", "", "", ""},
                {"未知亲戚", "未知亲戚", "未知亲戚", "未知亲戚", "未知亲戚", "未知亲戚", "未知亲戚", "未知亲戚", "未知亲戚", "未知亲戚", "未知亲戚", "未知亲戚"}
        };
        return relationshipData;
    }
}